<?php
namespace app\index\model;

/**
 * 引入模型基类
 */
use think\Model;

/**
 * 用户模型类
 * 负责处理用户相关的数据库操作
 */
class User extends Model
{
    /**
     * 设置数据表名
     * @var string
     */
    protected $table = 'mb_user';
    
    /**
     * 自动写入时间戳设置
     * @var string 时间格式为datetime类型
     */
    protected $autoWriteTimestamp = 'datetime';
    
    /**
     * 创建时间字段
     * @var string
     */
    protected $createTime = 'create_time';
    
    /**
     * 更新时间字段
     * @var string
     */
    protected $updateTime = 'update_time';

    /**
     * 用户注册
     * 创建新用户账号
     * 
     * @param array $data 用户注册数据
     * @return array 操作结果
     */
    public function register($data)
    {
        // 检查用户名是否已存在
        $user = $this->where('username', $data['username'])->find();
        if ($user) {
            return ['status' => 0, 'msg' => '用户名已存在'];
        }

        // 创建新用户记录
        $this->username = $data['username'];
        // 设置密码（注意：实际应用中应该对密码进行加密处理）
        $this->password = $data['password'];
        // 设置用户状态为1（正常）
        $this->status = 1;
        
        // 保存用户数据并返回结果
        if ($this->save()) {
            return ['status' => 1, 'msg' => '注册成功', 'data' => $this];
        }
        return ['status' => 0, 'msg' => '注册失败'];
    }

    /**
     * 用户登录验证
     * 验证用户名和密码是否匹配
     * 
     * @param string $username 用户名
     * @param string $password 密码
     * @return array 操作结果
     */
    public function login($username, $password)
    {
        // 查询符合条件的用户
        $user = $this->where([
            'username' => $username,
            'password' => $password,  // 注意：实际应用中应该对密码进行加密比对
            'status' => 1  // 只允许状态正常的用户登录
        ])->find();

        // 返回登录结果
        if ($user) {
            return ['status' => 1, 'msg' => '登录成功', 'data' => $user];
        }
        return ['status' => 0, 'msg' => '用户名或密码错误'];
    }

    /**
     * 修改密码
     * 验证原密码并更新为新密码
     * 
     * @param int $userId 用户ID
     * @param string $oldPassword 原密码
     * @param string $newPassword 新密码
     * @return array 操作结果
     */
    public function changePassword($userId, $oldPassword, $newPassword)
    {
        // 验证用户ID和原密码是否匹配
        $user = $this->where([
            'id' => $userId,
            'password' => $oldPassword  // 注意：实际应用中应该对密码进行加密比对
        ])->find();

        // 如果原密码不正确，返回错误信息
        if (!$user) {
            return ['status' => 0, 'msg' => '原密码错误'];
        }

        // 更新密码
        $user->password = $newPassword;  // 注意：实际应用中应该对新密码进行加密存储
        if ($user->save()) {
            return ['status' => 1, 'msg' => '密码修改成功'];
        }
        return ['status' => 0, 'msg' => '密码修改失败'];
    }
} 